package educar.controllers;

import java.awt.event.ActionEvent;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import educar.db.JPA;
import educar.gui.AlumnoView;
import educar.models.Actividad;
import educar.models.Session;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

public class TransaccionAlumnoController implements ActionListener{
  private static JPA jpa = new JPA();
  private AlumnoView view;
  String codigoMateria;
  String codigoActividad;
	
  public TransaccionAlumnoController(AlumnoView view){
    this.view = view; 
  }
	
  public void actionPerformed(ActionEvent evento){
    codigoMateria = "";
	codigoActividad = "";
	codigoMateria = view.getCodigoMateriaEnCargarSolucion();
	codigoActividad = view.getCodigoActividadEnCargarSolucion();
	if(evento.getActionCommand().equals("Ver actividades")){
	  try{
		view.actualizarActividades(this.listarActividadesPorMateria(codigoMateria));
	  } 
	  catch (SQLException e) {e.printStackTrace();}}
	else{
	  if(evento.getActionCommand().equals("Cargar Solucion")){
		if(codigoActividad.equals("")){
		  JOptionPane.showMessageDialog(null,"Error en los datos");
		}
		else {
		  String[] columns = {"dni_alumno","cod_act"};
		  PreparedStatement stm = jpa.newRecord("educar_dev.realiza", columns);
		  try {
		    int dni = 0;
			int cod_actividad = 0;
			dni = Session.getCurrentUser().getCode();
			stm.setInt(1,dni);
			cod_actividad = Integer.parseInt(view.getCodigoActividadEnCargarSolucion());
			stm.setInt(2,cod_actividad);
		  } 
		  catch (SQLException e) {
		    e.printStackTrace();
		  }
		  try {
		    stm.executeUpdate();
			JOptionPane.showMessageDialog(null,"Solucion cargada exitosamente");
		  }
		  catch (SQLException e) {
			JOptionPane.showMessageDialog(null,"Ya se cargo una solucion para esta actividad");
		  }
		}
	  }
	  else {
	    if(evento.getActionCommand().equals("Inscribirme")){
		  String[] columns = {"dni_alumno","cod_materia"};
		  PreparedStatement stm = jpa.newRecord("educar_dev.realizaDos", columns);
		  try {
		    int dni = 0;
			int cod_materia = 0;
			dni = Session.getCurrentUser().getCode();
			stm.setInt(1,dni);
			cod_materia = Integer.parseInt(view.getCodigoMateriaEnInscripcion());
			stm.setInt(2,cod_materia);
			stm.executeUpdate();
			view.actualizarMateriasInscripto();
			JOptionPane.showMessageDialog(null,"Inscripcion realizada con exito");
		  }
		  catch (SQLException e) {
		    JOptionPane.showMessageDialog(null,"Usted ya esta inscripto en la materia");
		  }
		  catch(NumberFormatException e){JOptionPane.showMessageDialog(null,"Error en los datos");}
		  }
	  }
	}
}
			
  public String[] listarActividadesPorMateria(String codigo) throws SQLException{ 
    ArrayList<String> actividades = Actividad.getActividadesPorMateria(codigo);
    String [] res = new String[actividades.size()+1];
    res[0] = "**ACTIVIDADES**";
    for(int i=1; i<(actividades.size()+1); i++) {
	  res [i] = actividades.get(i-1);  
    }
	return res;
  }
}
